From: Jonas Dreßler Date: Sun, 22 Jan 2023 18:29:23 +0000 (+0100) Subject: screencastService: Add gstreamer pipeline for h264 encoding on hardware X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~226^2^2~42 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ac2ed42de587eaa7e35b25b72f87c995bea09a82;p=gnome-shell.git screencastService: Add gstreamer pipeline for h264 encoding on hardware Try h264 on intel and AMD hardware using VA-API, using vapostproc to do the color conversion using specialized hardware. We're not adding a vaapi pipeline using the color conversion GL shader here, as vapostproc color conversion should be better suited for anything needed by vaapi based encoders/decoders. A capsfilter is used to enforce the use of DMAbuf (memory:DMABuf) with the new explicit modifier API (format=DMA_DRM). Also, we're using the new va* gst elements instead of the vaapi* ones here, as the vaapi* elements are deprecated, while the va* elements are actively maintained. Part-of: --- diff --git a/js/dbusServices/screencast/screencastService.js b/js/dbusServices/screencast/screencastService.js index 0645811fa..c01aa830f 100644 --- a/js/dbusServices/screencast/screencastService.js +++ b/js/dbusServices/screencast/screencastService.js @@ -31,6 +31,17 @@ const DEFAULT_DRAW_CURSOR = true; const PIPELINE_BLOCKLIST_FILENAME = 'gnome-shell-screencast-pipeline-blocklist'; const PIPELINES = [ + { + id: 'hwenc-dmabuf-h264-vaapi', + fileExtension: 'mp4', + pipelineString: + 'capsfilter caps=video/x-raw(memory:DMABuf),format=DMA_DRM,max-framerate=%F/1 ! \ + vapostproc ! \ + vah264enc ! \ + queue ! \ + h264parse ! \ + mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise', + }, { id: 'swenc-dmabuf-h264-openh264', fileExtension: 'mp4',